Backdrop

프로그래머스 ▸ 코딩 기초 트레이닝

문자열 묶기
0

문제 설명

문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ strArr의 길이 ≤ 100,000
    • 1 ≤ strArr의 원소의 길이 ≤ 30
    • strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.

입출력 예

strArrresult
["a","bc","d","efg","hi"]2

입출력 예 설명

입출력 예 #1

  • 각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다.
문자열 길이문자열 목록개수
1["a","d"]2
2["bc","hi"]2
3["efg"]1
  • 개수의 최댓값은 2이므로 2를 return 합니다.

풀이

이론

Map

Map 객체는 키-값 쌍을 저장하는 자료구조예요. 키는 중복될 수 없고, 값은 중복될 수 있어요. 키를 통해 값을 조회할 수 있어요. 키는 넣은 순서대로 저장하기 때문에, Map 객체를 순회할 때에도 넣은 순서대로 순회할 수 있어요.

const map1 = new Map();
 
map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);
 
console.log(map1.get('a'));
// Expected output: 1
 
map1.set('a', 97);
 
console.log(map1.get('a'));
// Expected output: 97
 
console.log(map1.size);
// Expected output: 3
 
map1.delete('b');
 
console.log(map1.size);
// Expected output: 2

코드

function solution(strArr) {
  const map = new Map();
  strArr.forEach(str => map.set(str.length, (map.get(str.length) ?? 0) + 1));
 
  return Math.max(...map.values());
}